/*
 * $Id: Input.cpp 74 2007-10-20 10:46:39Z soarchin $

 * Copyright 2007 aeolusc

 * This file is part of eReader2.

 * eReader2 is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.

 * eReader2 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "Input.h"
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include "Ctrl.h"
#include "Thread.h"

const unsigned char input_image[3][1250] = {
	{
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x80, 0x0F, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x18, 0x00, 
		0x38, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0xC0, 0x03, 0x00, 0x02, 
		0x00, 0x18, 0x00, 0x04, 0x00, 0x30, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x40, 
		0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x1E, 0x00, 
		0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0x03, 
		0x00, 0x02, 0x80, 0x01, 0x00, 0x04, 0x00, 0x30, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x38, 0x0C, 
		0xC0, 0x41, 0x00, 0x00, 0x03, 0x83, 0x01, 0x00, 0x03, 0x00, 0x02, 0xC3, 0x18, 0x36, 0x04, 0x80, 
		0x31, 0x30, 0x18, 0x00, 0xFC, 0x00, 0x20, 0x30, 0xFC, 0x61, 0x42, 0x00, 0xF0, 0x01, 0x80, 0xF1, 
		0x00, 0x00, 0x1F, 0xC2, 0x03, 0x00, 0x06, 0xC4, 0x0D, 0x00, 0x38, 0x18, 0x18, 0x00, 0x18, 0x23, 
		0x36, 0x00, 0xF0, 0x40, 0x66, 0x00, 0x00, 0x83, 0xF1, 0x01, 0x80, 0x01, 0x32, 0x03, 0x00, 0x06, 
		0x64, 0x06, 0x00, 0x30, 0x98, 0x19, 0x00, 0x18, 0x20, 0x33, 0x00, 0x60, 0x40, 0x66, 0x00, 0x00, 
		0x83, 0x99, 0x01, 0x80, 0x01, 0x32, 0x03, 0x00, 0x06, 0x64, 0x06, 0x00, 0x30, 0x98, 0x19, 0x0E, 
		0x18, 0x23, 0x33, 0x00, 0x60, 0x40, 0x66, 0x38, 0x00, 0x83, 0x71, 0xC3, 0x00, 0x1F, 0xE2, 0x06, 
		0x00, 0x0F, 0xC4, 0x07, 0x03, 0x78, 0x18, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x60, 
		0x30, 0x00, 0x80, 0x01, 0xC0, 0x03, 0x00, 0x02, 0x80, 0x0F, 0x00, 0x64, 0x06, 0x1B, 0x00, 0x18, 
		0x00, 0x6C, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x3C, 0x70, 0x03, 0x80, 0x01, 0xC0, 0x0C, 0x00, 
		0x02, 0xC0, 0x1F, 0x00, 0x04, 0x00, 0x33, 0x00, 0x18, 0x00, 0xCC, 0x00, 0x20, 0x00, 0x0C, 0x00, 
		0x40, 0x00, 0x30, 0x03, 0x80, 0x01, 0xC0, 0x0C, 0x00, 0x02, 0xC0, 0x00, 0x00, 0x04, 0x00, 0x33, 
		0x00, 0x18, 0x00, 0xCC, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x30, 0x03, 0x80, 0x01, 0xC0, 
		0x07, 0x00, 0x02, 0x80, 0x0F, 0x00, 0x04, 0x80, 0x33, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 
		0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 
		0x60, 0x00, 0x20, 0x00, 0xFC, 0x01, 0x40, 0x00, 0xE0, 0x00, 0x80, 0x01, 0x00, 0x07, 0x00, 0x02, 
		0xC0, 0x00, 0x00, 0x04, 0x00, 0x03, 0x00, 0x18, 0x00, 0x78, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x40, 
		0x00, 0x18, 0x00, 0x80, 0x01, 0xC0, 0x06, 0x00, 0x02, 0xC0, 0x00, 0x00, 0x04, 0x80, 0x01, 0x00, 
		0x18, 0x00, 0x66, 0x00, 0x20, 0x00, 0xFC, 0x00, 0x40, 0x00, 0xF8, 0x01, 0x80, 0x01, 0xE0, 0x0F, 
		0x00, 0x02, 0x00, 0x18, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 0x00, 0x60, 0x00, 0x20, 0x00, 0x80, 
		0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0x03, 0x06, 0x0E, 0x02, 0x00, 0x18, 0x00, 0x04, 0x80, 
		0x31, 0x00, 0x18, 0x30, 0x60, 0xC0, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 
		0x00, 0x0F, 0x0C, 0x02, 0x80, 0x0F, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x18, 0x38, 0x00, 0xC0, 0x20, 
		0x37, 0x00, 0xE0, 0x43, 0x76, 0x00, 0x60, 0x87, 0x01, 0x03, 0x00, 0x0C, 0xF2, 0x07, 0x00, 0x63, 
		0xC4, 0x0C, 0x00, 0xDC, 0x18, 0x30, 0x00, 0xC0, 0x20, 0x6B, 0x00, 0x30, 0x46, 0xCC, 0x00, 0xC0, 
		0x8C, 0x01, 0x03, 0x00, 0x0C, 0xB2, 0x06, 0x00, 0x63, 0xC4, 0x0C, 0x00, 0x0C, 0x18, 0x30, 0x00, 
		0xC0, 0x20, 0x6B, 0x00, 0x30, 0x46, 0xCC, 0x00, 0xC0, 0x80, 0x01, 0xE3, 0x00, 0x0C, 0xB2, 0x06, 
		0x00, 0x63, 0xC4, 0x0C, 0x00, 0x0C, 0x18, 0x30, 0x0C, 0xE0, 0x21, 0x63, 0x00, 0xE0, 0x43, 0x7C, 
		0x00, 0xE0, 0x81, 0x31, 0xC3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x18, 
		0x33, 0xCC, 0x00, 0x20, 0x00, 0xEC, 0x00, 0x40, 0x0C, 0x70, 0x03, 0x80, 0xE1, 0xC1, 0x06, 0x00, 
		0x02, 0x80, 0x19, 0x00, 0xE4, 0x81, 0x19, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x98, 0x01, 
		0x40, 0x00, 0x98, 0x01, 0x80, 0x01, 0xC0, 0x03, 0x00, 0x02, 0x80, 0x19, 0x00, 0x04, 0x80, 0x19, 
		0x00, 0x18, 0x00, 0x6C, 0x00, 0x20, 0x00, 0x98, 0x01, 0x40, 0x00, 0x98, 0x01, 0x80, 0x01, 0xC0, 
		0x0C, 0x00, 0x02, 0x80, 0x19, 0x00, 0x04, 0x80, 0x19, 0x00, 0x18, 0x00, 0xCE, 0x00, 0x20, 0x00, 
		0x98, 0x01, 0x40, 0x00, 0xF0, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x01, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 
		0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0xE0, 0x0F, 0x00, 0x02, 
		0x80, 0x0F, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x18, 0x00, 0xC6, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 
		0x00, 0x18, 0x03, 0x80, 0x01, 0x00, 0x0C, 0x00, 0x02, 0xC0, 0x18, 0x00, 0x04, 0x80, 0x31, 0x00, 
		0x18, 0x00, 0xC0, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0x00, 0x06, 
		0x00, 0x02, 0x80, 0x0F, 0x00, 0x04, 0x00, 0x3F, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x8C, 
		0x01, 0x40, 0x00, 0x00, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x02, 0xC0, 0x18, 0x00, 0x04, 0x00, 
		0x30, 0x00, 0x18, 0x00, 0x18, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x00, 0x83, 0x83, 0x01, 
		0x80, 0x01, 0x00, 0x02, 0xC0, 0x18, 0x00, 0x04, 0x00, 0x18, 0x6C, 0x18, 0x00, 0x18, 0x00, 0x20, 
		0x00, 0xF8, 0x00, 0x40, 0x00, 0xF0, 0x60, 0x8C, 0xF1, 0x01, 0x80, 0x19, 0x62, 0x06, 0x00, 0x63, 
		0x64, 0x0C, 0x00, 0xC6, 0x98, 0x31, 0x00, 0x98, 0x21, 0x66, 0x00, 0x60, 0x43, 0xC6, 0x00, 0x60, 
		0x8D, 0x31, 0x00, 0x80, 0x19, 0x62, 0x06, 0x00, 0x1C, 0x64, 0x0C, 0x00, 0xD6, 0x18, 0x0E, 0x00, 
		0x98, 0x21, 0x66, 0x00, 0xC0, 0x41, 0xC6, 0x00, 0x60, 0x8C, 0x81, 0x01, 0x80, 0x19, 0x62, 0x06, 
		0x00, 0x1C, 0x64, 0x0C, 0x00, 0xC6, 0x98, 0x31, 0x10, 0x98, 0x21, 0x3C, 0x00, 0x60, 0x43, 0xC6, 
		0x00, 0xC0, 0x86, 0xF1, 0x81, 0x01, 0x37, 0x82, 0x01, 0x00, 0x63, 0xC4, 0x0F, 0x00, 0x38, 0x18, 
		0x00, 0x18, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xC0, 0x00, 0x00, 0x80, 0x01, 0xE0, 0x07, 0x00, 
		0x02, 0xC0, 0x18, 0x00, 0x04, 0x86, 0x3F, 0x00, 0x18, 0x00, 0x18, 0x00, 0x20, 0x00, 0x8C, 0x01, 
		0x40, 0x3E, 0x98, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x02, 0xC0, 0x1A, 0x00, 0x04, 0x00, 0x0C, 
		0x00, 0x18, 0x00, 0x18, 0x00, 0x20, 0x00, 0xAC, 0x01, 0x40, 0x00, 0x60, 0x00, 0x80, 0x01, 0x80, 
		0x01, 0x00, 0x02, 0xC0, 0x1A, 0x00, 0x04, 0x00, 0x03, 0x00, 0x18, 0x00, 0xD8, 0x00, 0x20, 0x00, 
		0xFC, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0x00, 0x07, 0x00, 0x02, 0x80, 0x0D, 0x00, 0x04, 
		0x80, 0x3F, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF
	},
	{
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 
		0x78, 0x00, 0x20, 0x00, 0xF8, 0x00, 0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0x80, 0x07, 0x00, 0x02, 
		0xC0, 0x18, 0x00, 0x04, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x78, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 
		0x00, 0xF8, 0x03, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0xC0, 0x1E, 0x00, 0x04, 0x00, 0x1B, 0x00, 
		0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0xEC, 0x01, 0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0x00, 0x03, 
		0x00, 0x02, 0xC0, 0x1E, 0x00, 0x04, 0x00, 0x1B, 0x00, 0x18, 0x04, 0x00, 0xE0, 0x21, 0x1F, 0xEC, 
		0xF0, 0x47, 0x78, 0xF8, 0x83, 0x87, 0xE1, 0x00, 0x03, 0x33, 0x62, 0xC3, 0x00, 0x66, 0xC4, 0x0C, 
		0x1B, 0x30, 0x18, 0x1B, 0x30, 0x18, 0x22, 0x66, 0xF8, 0x60, 0x44, 0x86, 0xB0, 0x01, 0x83, 0x19, 
		0x03, 0x80, 0x01, 0x62, 0x06, 0x00, 0x16, 0x64, 0x00, 0x00, 0x30, 0x98, 0x31, 0x00, 0x18, 0x20, 
		0x66, 0x00, 0xE0, 0x41, 0x06, 0x00, 0x00, 0x83, 0xF9, 0x03, 0x80, 0x01, 0x62, 0x06, 0x00, 0x16, 
		0x64, 0x0F, 0x00, 0x30, 0x98, 0x31, 0x00, 0x18, 0x20, 0x66, 0x00, 0x60, 0x40, 0xC6, 0x00, 0x00, 
		0x83, 0x19, 0x03, 0x80, 0x21, 0x62, 0x06, 0x00, 0x06, 0x64, 0x0C, 0x00, 0x30, 0x98, 0x31, 0x7E, 
		0x30, 0x23, 0x36, 0xFC, 0x61, 0x40, 0xCC, 0x18, 0x03, 0x83, 0x19, 0xC3, 0x0C, 0x1E, 0xF2, 0x81, 
		0x19, 0x0F, 0x84, 0x8B, 0x31, 0x78, 0x18, 0x00, 0xCC, 0x00, 0x20, 0x00, 0x18, 0x01, 0x40, 0x00, 
		0x18, 0x03, 0x80, 0x01, 0xC0, 0x0C, 0x00, 0x02, 0x80, 0x05, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 
		0x00, 0x7C, 0x00, 0x20, 0x00, 0x78, 0x00, 0x40, 0x00, 0xF8, 0x03, 0x80, 0x01, 0xC0, 0x0C, 0x00, 
		0x02, 0x80, 0x05, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 0x00, 0xCC, 0x00, 0x20, 0x00, 0x18, 0x00, 
		0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0xC0, 0x0C, 0x00, 0x02, 0x80, 0x11, 0x00, 0x04, 0x80, 0x31, 
		0x00, 0x18, 0x00, 0xCC, 0x00, 0x20, 0x00, 0x98, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0xE0, 
		0x07, 0x00, 0x02, 0xC0, 0x1F, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 
		0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 
		0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x18, 0x00, 
		0x7C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0x60, 0x0C, 0x00, 0x02, 
		0x00, 0x00, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 0x00, 0x86, 0x00, 0x20, 0x00, 0x0C, 0x01, 0x40, 
		0x00, 0x00, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x02, 0xC0, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 
		0x18, 0x00, 0x7C, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0C, 
		0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0xC0, 0x00, 0x20, 0x00, 0x30, 
		0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x23, 0x8C, 0x07, 0x32, 0x86, 0x01, 0x3E, 0xE4, 0x07, 
		0x00, 0x7E, 0x18, 0x18, 0xC6, 0x30, 0x20, 0x77, 0x8C, 0x31, 0x46, 0xCC, 0x00, 0xC0, 0x8C, 0x81, 
		0xC1, 0x07, 0x03, 0xF2, 0x47, 0x18, 0x63, 0xC4, 0x0C, 0x00, 0xCC, 0x18, 0x18, 0x30, 0x30, 0x20, 
		0x7F, 0x00, 0x30, 0x46, 0xCC, 0x00, 0xC0, 0x8C, 0x81, 0x01, 0x03, 0x03, 0xB2, 0x06, 0x00, 0x63, 
		0xC4, 0x07, 0x00, 0x7C, 0x18, 0x18, 0x00, 0x30, 0x20, 0x63, 0x00, 0x30, 0x46, 0x0C, 0x00, 0xC0, 
		0x86, 0x99, 0x01, 0x00, 0x03, 0x32, 0x06, 0x00, 0x63, 0xC4, 0x00, 0x00, 0xCC, 0x98, 0x19, 0x00, 
		0x30, 0x22, 0x63, 0x00, 0x30, 0x46, 0x0C, 0x00, 0xC0, 0x8C, 0x99, 0xE1, 0x0C, 0x33, 0x32, 0xC6, 
		0x18, 0x63, 0xC4, 0x00, 0x1F, 0xCC, 0x18, 0x0F, 0xCC, 0xF8, 0x23, 0x63, 0x9C, 0xE1, 0x43, 0x1E, 
		0x18, 0xE3, 0x8C, 0x01, 0xC0, 0x0C, 0x00, 0x02, 0xC0, 0x1B, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 
		0x00, 0x6C, 0x00, 0x20, 0x00, 0xFC, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0xC0, 0x03, 0x00, 
		0x02, 0xC0, 0x1E, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x20, 0x00, 0xCC, 0x01, 
		0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0xC0, 0x06, 0x00, 0x02, 0xC0, 0x18, 0x00, 0x04, 0x80, 0x31, 
		0x00, 0x18, 0x00, 0xCC, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x58, 0x03, 0x80, 0x01, 0xC0, 
		0x0C, 0x00, 0x02, 0xC0, 0x18, 0x00, 0x04, 0x80, 0x3D, 0x00, 0x18, 0x00, 0xCE, 0x00, 0x20, 0x00, 
		0x8C, 0x01, 0x40, 0x00, 0xF0, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x03, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 
		0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x03, 0x00, 0x02, 
		0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x6C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 
		0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
		0x18, 0x00, 0x38, 0x00, 0x20, 0x00, 0x98, 0x01, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x0D, 
		0x00, 0x02, 0x00, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x76, 0x00, 0x20, 0x00, 0xFC, 
		0x03, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x60, 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00, 0x04, 0x00, 
		0x00, 0x00, 0x18, 0x1F, 0x66, 0x18, 0x23, 0x63, 0x98, 0x31, 0x46, 0xCC, 0xC0, 0x00, 0x80, 0x19, 
		0x63, 0x86, 0x31, 0x32, 0x06, 0x00, 0x63, 0xC4, 0x0C, 0x0C, 0x00, 0x98, 0x31, 0xDC, 0x18, 0x23, 
		0x63, 0x00, 0x60, 0x43, 0xCC, 0xC0, 0x00, 0x80, 0x31, 0x00, 0x80, 0x31, 0x32, 0x06, 0x00, 0x3E, 
		0xC4, 0x0C, 0x06, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x23, 0x63, 0x00, 0xC0, 0x41, 0x78, 0x00, 0x00, 
		0x80, 0x81, 0x01, 0x80, 0x31, 0x32, 0x06, 0x00, 0x1C, 0x04, 0x03, 0x00, 0x00, 0x18, 0x30, 0x00, 
		0x18, 0x23, 0x63, 0x00, 0xE0, 0x43, 0x30, 0x00, 0x00, 0x80, 0x19, 0x03, 0x80, 0x31, 0x62, 0x03, 
		0x00, 0x36, 0x04, 0x03, 0x00, 0x00, 0x98, 0x31, 0xFC, 0x18, 0x23, 0x1C, 0x8C, 0x31, 0x46, 0x30, 
		0xF8, 0x03, 0x83, 0xF1, 0xC1, 0x0F, 0x1F, 0x82, 0xC0, 0x18, 0x63, 0x84, 0x87, 0x31, 0x30, 0x18, 
		0x00, 0xB4, 0x00, 0x20, 0x00, 0x8C, 0x01, 0x40, 0x00, 0x08, 0x03, 0x80, 0x01, 0x00, 0x03, 0x00, 
		0x02, 0xC0, 0x18, 0x00, 0x04, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0xAC, 0x01, 
		0x40, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0xC0, 0x1A, 0x00, 0x04, 0x00, 0x06, 
		0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0xAC, 0x01, 0x40, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 
		0x03, 0x00, 0x02, 0xC0, 0x1F, 0x00, 0x04, 0x80, 0x21, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 
		0xDC, 0x01, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0x80, 0x07, 0x00, 0x02, 0x80, 0x0D, 0x00, 0x04, 
		0x80, 0x3F, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF
	},
	{
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x18, 0x00, 
		0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 0x00, 0x18, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 
		0x00, 0x06, 0x00, 0x04, 0x80, 0x31, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 
		0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x00, 
		0x18, 0x00, 0xFE, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x00, 
		0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x60, 0x20, 0x3C, 0x60, 
		0xC0, 0x43, 0xE0, 0x00, 0xC0, 0x81, 0xC1, 0x00, 0x00, 0x0C, 0xC2, 0x00, 0x06, 0x30, 0x04, 0x03, 
		0x0C, 0x30, 0x18, 0x06, 0x00, 0x80, 0x21, 0x0C, 0x60, 0x00, 0x43, 0x30, 0xC0, 0x00, 0x83, 0x61, 
		0x00, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x30, 0x18, 0x06, 0x00, 0x80, 0x21, 
		0x0C, 0x00, 0x00, 0x43, 0x1C, 0x00, 0x00, 0x8E, 0x61, 0x00, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x30, 
		0x04, 0x03, 0x00, 0x30, 0x18, 0x06, 0x00, 0x80, 0x21, 0x0C, 0x00, 0x00, 0x43, 0x30, 0x00, 0x00, 
		0x83, 0x61, 0x00, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x30, 0x18, 0x0C, 0x00, 
		0xC0, 0x20, 0x0C, 0x00, 0x00, 0x43, 0x30, 0xC0, 0x00, 0x83, 0x81, 0x01, 0x00, 0x06, 0xC2, 0x43, 
		0x00, 0x3C, 0x04, 0x0E, 0x1E, 0x1C, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x40, 0x00, 
		0xE0, 0x01, 0x80, 0x01, 0xC0, 0x0F, 0x00, 0x02, 0xC0, 0x01, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x18, 
		0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x40, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 
		0x02, 0x00, 0x07, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x18, 0x00, 0xFC, 0x00, 0x20, 0x00, 0xE0, 0x00, 
		0x40, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x00, 
		0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 
		0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 
		0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 
		0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 
		0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 
		0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x33, 0x00, 
		0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0xE0, 0x01, 0x80, 0x01, 0xC0, 0x0F, 
		0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x80, 0x7F, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 
		0x00, 0x40, 0xCC, 0xE0, 0x81, 0x81, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0xC4, 0x0C, 
		0x33, 0x18, 0x18, 0x30, 0x00, 0x30, 0x20, 0x00, 0x60, 0x00, 0x40, 0xCC, 0x00, 0x80, 0x81, 0x81, 
		0x01, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x0C, 0x18, 0x0C, 0x00, 0xC0, 0x20, 
		0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 
		0x04, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 
		0x80, 0x61, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x0C, 0x00, 
		0xC0, 0x20, 0x18, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x81, 0x01, 0x00, 0x06, 0x82, 0x01, 
		0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x18, 0x30, 0x00, 0x30, 0x20, 0x18, 0x00, 0x80, 0x41, 0x00, 
		0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x06, 0x00, 0x04, 0x00, 0x20, 0x00, 0x18, 
		0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 
		0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 
		0x40, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 
		0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 
		0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 
		0x30, 0x00, 0x40, 0x00, 0x08, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
		0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x18, 0x00, 
		0x38, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x80, 0x01, 0xC0, 0x06, 0x00, 0x02, 
		0x00, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x18, 0x00, 0xC6, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 
		0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
		0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 
		0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
		0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 
		0x00, 0x00, 0x18, 0x00, 0x00, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x8D, 0x01, 
		0x00, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x00, 0xC4, 0x07, 0x00, 0x76, 0x98, 0x21, 0x00, 0xB0, 0x21, 
		0x00, 0x00, 0x00, 0x40, 0xC6, 0x00, 0x00, 0x80, 0x19, 0x03, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x00, 
		0x64, 0x0C, 0x00, 0x00, 0x18, 0x18, 0x00, 0x70, 0x23, 0x00, 0x00, 0x00, 0x40, 0xF6, 0x00, 0x00, 
		0x80, 0xC1, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x00, 0x00, 0x64, 0x0F, 0x00, 0x00, 0x18, 0x06, 0x30, 
		0x98, 0x21, 0x00, 0x00, 0x00, 0x40, 0xF6, 0x00, 0x00, 0x80, 0x31, 0x00, 0x83, 0x19, 0x02, 0x00, 
		0x00, 0x00, 0x64, 0x07, 0x00, 0x00, 0x98, 0x31, 0x7C, 0x98, 0x21, 0x00, 0x00, 0x00, 0x40, 0x06, 
		0x00, 0x00, 0x80, 0x09, 0x63, 0x0C, 0x37, 0x02, 0x00, 0x00, 0x00, 0xC4, 0x07, 0x1B, 0x00, 0x18, 
		0x00, 0x86, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0x60, 0x00, 0x00, 
		0x02, 0x00, 0x00, 0x00, 0x04, 0x80, 0x3F, 0x00, 0x18, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x00, 0x00, 
		0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1B, 
		0x00, 0x18, 0x00, 0xC0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0x20, 
		0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x80, 0x3F, 0x00, 0x18, 0x00, 0xC6, 0x00, 0x20, 0x00, 
		0x00, 0x00, 0x40, 0x00, 0xB0, 0x01, 0x80, 0x01, 0xC0, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 
		0x00, 0x1B, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 
		0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 
		0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
		0x00, 0x04, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
		0xFF, 0xFF
	}
};

CONST CHAR key_board[3][9][4] = {
	{
		{'1', 'b', 'a', 'c'},
		{'2', 'e', 'd', 'f'},
		{'3', 'h', 'g', 'i'},
		{'4', 'k', 'j', 'l'},
		{'5', 'n', 'm', 'o'},
		{'6', 'q', 'p', 'r'},
		{'7', 't', 's', 'u'},
		{'8', 'w', 'v', 'x'},
		{'9', 'z', 'y', '0'},
	},
	{
		{'!', 'B', 'A', 'C'},
		{'@', 'E', 'D', 'F'},
		{'#', 'H', 'G', 'I'},
		{'$', 'K', 'J', 'L'},
		{'%', 'N', 'M', 'O'},
		{'^', 'Q', 'P', 'R'},
		{'&', 'T', 'S', 'U'},
		{'*', 'W', 'V', 'X'},
		{',', 'Z', 'Y', '.'},
	},
	{
		{'-', '=', '(', ')'},
		{'|', '\\', '[', ']'},
		{'?', '!', '{', '}'},
		{'+', '-', '<', '>'},
		{':', ';', ',', '.'},
		{'*', '/', '"', '\''},
		{'^', '$', '%', '&'},
		{' ', ' ', ' ', ' '},
		{'`', '#', '@', '~'},
	}
};

Input::Input()
{
	INT i, z;
	m_selected = (PIXEL *)memalign(16, 1024 * sizeof(PIXEL));
	for(i = 0; i < 1024; i ++)
		m_selected[i] = 0x800000FF;
	for(i = 0; i < 3; i ++)
	{
		m_panel[i] = (PIXEL *)memalign(16, 128 * 128 * sizeof(PIXEL));
		memset(m_panel[i], 0, 128 * 128 * sizeof(PIXEL));
		z = 0;
		for(INT j = 0; j < 1250; j ++)
			for(INT k = 0; k < 8; k ++)
			{
				m_panel[i][z ++] = (input_image[i][j] & (1 << k)) ? COLOR_WHITE : 0;
				if((z % 128) == 100)
					z += 28;
			}
	}
}

Input::~Input()
{
	free(m_selected);
	for(INT i = 0; i < 3; i ++)
		free(m_panel[i]);
}

VOID Input::StartAt(INT x, INT y)
{
	DWORD btn = 0, lbtn = 0;
	INT ll = 3, lt = 3;
	while((btn = g_Ctrl.Read()) != Ctrl::START)
	{
		INT l = 1, t = 1, idx = 0;
		g_Ctrl.ReadAnalog(l, t);
		l = l / 96 + 1;
		t = t / 96 + 1;
		if(lbtn == btn && ll == l && lt == t)
		{
			Thread::Delay(30000);
			continue;
		}
		ll = l;
		lt = t;
		lbtn = btn;
		if(btn & Ctrl::LTRIGGER)
			idx = 2;
		if(btn & Ctrl::RTRIGGER)
			idx = 1;
		g_Display.BeginPaint();
		g_Display.FillVRAM();
		switch(btn & ~(Ctrl::LTRIGGER | Ctrl::RTRIGGER))
		{
		case Ctrl::TRIANGLE:
			PutChar(key_board[idx][t * 3 + l][0]);
			break;
		case Ctrl::CROSS:
			PutChar(key_board[idx][t * 3 + l][1]);
			break;
		case Ctrl::SQUARE:
			PutChar(key_board[idx][t * 3 + l][2]);
			break;
		case Ctrl::CIRCLE:
			PutChar(key_board[idx][t * 3 + l][3]);
			break;
		case Ctrl::LEFT:
			MoveLeft();
			break;
		case Ctrl::RIGHT:
			MoveRight();
			break;
		case Ctrl::UP:
			Backspace();
			break;
		case Ctrl::DOWN:
			PutChar(' ');
			break;
		}
		Predraw();
		g_Display.PutImage(x, y, 128, 128, 128, 0, 0, 0, 0, m_panel[idx]);
		g_Display.PutImage(x + 1 + 33 * l, y + 1 + 33 * t, 32, 32, 32, 0, 0, 0, 0, m_selected);
		g_Display.EndPaint();
		Thread::Delay(40000);
	}
}
